<%@page import="web.graficos.GraficosFactory"%>
<%@page import="web.graficos.Graficos"%>
<%@page import="web.graficos.base.GraficosBase"%>
<%@page import="logic.Filtro"%>
<%@page import="bean.juego.Juego"%>
<%@page import="bean.jugador.Jugador"%>
<%@page import="java.util.HashMap"%>
<%@page import="util.Pair"%>
<%@page import="java.util.Map"%>
<%@page import="logic.Buscador"%>
<%@page import="java.util.List"%>
<%@page import="web.URLHelper"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
    List<Jugador> todosJugadores = Buscador.getJugadores();
    Jugador bot = Buscador.jugadorPorApodo("Bot");
    Graficos graficos = GraficosFactory.getGraficos(true);
    String sJugadores = request.getParameter("jugadores");
    if (sJugadores == null) {
        sJugadores = Filtro.getNombreJugadoresCSV();
    }

    List<Jugador> jugadoresElegidos = Filtro.getJugadoresCSV(sJugadores);
    Map<Jugador, Integer> historicoMVP = Filtro.getHistoricoMVP();
%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link href="<%=URLHelper.getCSSURL()%>" rel="stylesheet">
        <title>InfArena Estadisticas</title>
    </head>
    <body class="body_class">
        <div class="stalker">
            <a href="<%=URLHelper.rootFolder%>">
                Inicio
            </a>
            <form action="#">
                <table>
                    <tr>
                        <%
                            for (Jugador jugador : todosJugadores) {
                                if (bot.equals(jugador)) {
                                    continue;
                                }
                        %>
                        <td>
                            <jsp:include flush="true" page="imagenJugador.jsp">
                                <jsp:param name="njugador" value="<%=jugador.getDatos().getNombre()%>"></jsp:param>
                                <jsp:param name="tamanio" value="50"></jsp:param>
                            </jsp:include>
                            <br/>
                            <input type="checkbox" value="<%=jugador.getDatos().getNombre()%>" id="id_checkbox_<%=todosJugadores.indexOf(jugador)%>" onclick="createCompareLink();" <%=jugadoresElegidos.contains(jugador) ? "checked" : ""%>/>
                        </td>
                        <%  }%>
                    </tr>
                </table>
            </form>
            <a id="id_link_comparar" href="#">
                Comparar
            </a>
        </div>
        <br/>
        <br/>
        <div style="height: 80px;" ></div>
        <table style="width: 99%">
            <tr>
                <th>Jugador</th>
                <th>Partidos</th>
                <th>Partidos Ganados</th>
                <th>Efectividad</th>
                <!--<th>Minutos Jugados</th> -->
                <th>Puntos por Minuto</th>
                <!--<th>Muertes Hechas</th>-->
                <!--<th>Muertes Recibidas</th>-->
                <th>Deaths/Kills Ratio</th>
                <th>Veces MVP</th>
                <th>Veces MVP por partido</th>
            </tr>
            <%
                for (Jugador jugador : jugadoresElegidos) {
                    if (bot.equals(jugador)) {
                        continue;
                    }
            %>
            <tr>
                <td class="table_cell">
                    <jsp:include flush="true" page="imagenJugador.jsp">
                        <jsp:param name="njugador" value="<%=jugador.getDatos().getNombre()%>"></jsp:param>
                        <jsp:param name="tamanio" value="64"></jsp:param>
                    </jsp:include>
                </td>
                <td class="table_cell">
                    <%=jugador.getPartidos()%>
                </td>
                <td class="table_cell">
                    <%=jugador.getPartidosGanados()%>
                </td>
                <td class="table_cell">
                    <%=String.format("%.4g%n", 100 * jugador.getEfectividad())%>%
                </td>
                <!--<td class="table_cell">
                <%=jugador.getTiempoJugado() / 60%>
                </td>-->
                <td class="table_cell">
                    <%=String.format("%.3g%n", jugador.getPuntosPorMinuto())%>
                </td>
                <!--<td class="table_cell">
                    <%=jugador.getMuertesHechas().size()%>
                </td>-->
                <!--<td class="table_cell">
                    <%=jugador.getMuertesRecibidas().size()%>
                </td>-->
                <td class="table_cell">
                    <%=String.format("%.3g%n", jugador.getDeathsKillsRatio())%>
                </td>
                <td class="table_cell">
                    <%=historicoMVP.get(jugador)%>
                </td>
                <td class="table_cell">
                    <%=String.format("%.3g%n", jugador.getVecesMVPporPartido())%>
                </td>
            </tr>

            <%  }%>
        </table>
        <br/>
        <br/>
        <table style="width: 99%">
            <tr>
                <td class="table_cell">
                    Muertes
                </td>
                <%
                    for (Jugador jugador : jugadoresElegidos) {
                %>
                <td class="table_cell">
                    <jsp:include flush="true" page="imagenJugador.jsp">
                        <jsp:param name="njugador" value="<%=jugador.getDatos().getNombre()%>"></jsp:param>
                        <jsp:param name="tamanio" value="50"></jsp:param>
                    </jsp:include>
                </td>
                <%  }%>
            </tr>


            <%
                for (Jugador jugador : jugadoresElegidos) {
            %>
            <tr>
                <td class="table_cell">
                    <jsp:include flush="true" page="imagenJugador.jsp">
                        <jsp:param name="njugador" value="<%=jugador.getDatos().getNombre()%>"></jsp:param>
                        <jsp:param name="tamanio" value="50"></jsp:param>
                    </jsp:include>
                </td>

                <%
                    for (Jugador otroJugador : jugadoresElegidos) {
                        int muertesHechas = Filtro.cantidadMuertesJugadorAJugador(jugador, otroJugador);
                        int muertesRecibidas = Filtro.cantidadMuertesJugadorAJugador(otroJugador, jugador);
                        float ventaja = 0;
                        String ventajasStyleClass = "table_cell";
                        int muertesTotales = muertesHechas + muertesRecibidas;
                        if (muertesTotales > 0) {
                            ventaja = (float) 100 * (muertesHechas - muertesRecibidas) / muertesRecibidas;
                            if (muertesHechas > muertesRecibidas) {
                                ventajasStyleClass = "table_cell_positive";
                            } else if (muertesHechas < muertesRecibidas) {
                                ventajasStyleClass = "table_cell_negative";
                            }
                        }
                %>

                <td class="small <%=ventajasStyleClass%>">
                    <%=muertesHechas + "/" + muertesRecibidas%>
                    </br>
                    <%=String.format("%.3g%n", ventaja) + " %"%>
                </td>

                <%  }%>
            </tr>
            <%  }%>
        </table>
        <div id="chart_div_efectividad" class="chart"></div>
        <div id="chart_div_efectividad_ponderada" class="chart"></div>
        <div id="chart_div_efectividad_ultimos" class="chart"></div>
        <div id="chart_div_DeathKillsRatio" class="chart"></div>
        <div id="chart_div_DeathKillsRatio_ultimos" class="chart"></div>
        <div id="chart_div_puntos" class="chart"></div>
        <div id="chart_div_puntos_ultimos" class="chart"></div>


        <script type="text/javascript" src="<%=URLHelper.jsFolder + "/google_jsapi.js"%>"></script>
        <script type="text/javascript">
            google.load("visualization", "1", {packages:["corechart"]});
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                    ['Juego',<%=graficos.nombresJugadoresCSV(jugadoresElegidos)%> ],
            <%=graficos.matrixEfectividad(jugadoresElegidos)%>
                    ]);

                    var options = {
                        title: 'Efectividad',
                        vAxis: {
                            viewWindowMode:'explicit',
                            viewWindow:{
                                max:100,
                                min:0
                            }
                        }
                    };

                    var chart = new google.visualization.LineChart(document.getElementById('chart_div_efectividad'));
                    chart.draw(data, options);
                }
        </script>

        <script type="text/javascript">
            google.load("visualization", "1", {packages:["corechart"]});
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                    ['Juego',<%=graficos.nombresJugadoresCSV(jugadoresElegidos)%> ],
            <%=graficos.matrixEfectividadPonderada(jugadoresElegidos)%>
                    ]);

                    var options = {
                        title: 'Efectividad Ponderada',
                        vAxis: {
                            viewWindowMode:'explicit',
                            viewWindow:{
                                max:1,
                                min:0
                            }
                        }
                    };

                    var chart = new google.visualization.LineChart(document.getElementById('chart_div_efectividad_ponderada'));
                    chart.draw(data, options);
                }
        </script>

        <script type="text/javascript">
            google.load("visualization", "1", {packages:["corechart"]});
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                    ['Juego',<%=graficos.nombresJugadoresCSV(jugadoresElegidos)%> ],
            <%=graficos.matrixEfectividad(jugadoresElegidos, 50)%>
                    ]);

                    var options = {
                        title: 'Efectividad (ultimos 50)',
                        curveType: 'function',
                        vAxis: {
                            viewWindowMode:'explicit',
                            viewWindow:{
                                max:100,
                                min:0
                            }
                        }

                    };

                    var chart = new google.visualization.LineChart(document.getElementById('chart_div_efectividad_ultimos'));
                    chart.draw(data, options);
                }
        </script>

        <script type="text/javascript">
            google.load("visualization", "1", {packages:["corechart"]});
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                    ['Juego',<%=graficos.nombresJugadoresCSV(jugadoresElegidos)%> ],
            <%=graficos.getDeathKillsRatio(jugadoresElegidos)%>
                    ]);

                    var options = {
                        title: 'Death/Kills Ratio',
                        vAxis: {
                            viewWindowMode:'explicit',
                            viewWindow:{
                                max:1.5,
                                min:0.4
                            }
                        }
                    };

                    var chart = new google.visualization.LineChart(document.getElementById('chart_div_DeathKillsRatio'));
                    chart.draw(data, options);
                }
        </script>

        <script type="text/javascript">
            google.load("visualization", "1", {packages:["corechart"]});
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                    ['Juego',<%=graficos.nombresJugadoresCSV(jugadoresElegidos)%> ],
            <%=graficos.getDeathKillsRatio(jugadoresElegidos, 25)%>
                    ]);

                    var options = {
                        title: 'Death/Kills Ratio (ultimos 25 partidos)',
                        curveType: 'function',
                        vAxis: {
                            viewWindowMode:'explicit',
                            viewWindow:{
                                max:1.7,
                                min:0.4
                            }
                        }
                    };

                    var chart = new google.visualization.LineChart(document.getElementById('chart_div_DeathKillsRatio_ultimos'));
                    chart.draw(data, options);
                }
        </script>


        <script type="text/javascript">
            google.load("visualization", "1", {packages:["corechart"]});
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                    ['Juego',<%=graficos.nombresJugadoresCSV(jugadoresElegidos)%> ],
            <%=graficos.matrixPuntosPorMinuto(jugadoresElegidos)%>

                    ]);

                    var options = {
                        title: 'Puntos por minuto'
                    };

                    var chart = new google.visualization.LineChart(document.getElementById('chart_div_puntos'));
                    chart.draw(data, options);
                }
        </script>

        <script type="text/javascript">
            google.load("visualization", "1", {packages:["corechart"]});
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                    ['Juego',<%=graficos.nombresJugadoresCSV(jugadoresElegidos)%> ],
            <%=graficos.matrixPuntosPorMinuto(jugadoresElegidos, 25)%>

                    ]);

                    var options = {
                        title: 'Puntos por minuto (ultimos 25 partidos)',
                        curveType: 'function',
                        vAxis: {
                            viewWindowMode:'explicit',
                            viewWindow:{
                                max:10,
                                min:0
                            }
                        }
                    };

                    var chart = new google.visualization.LineChart(document.getElementById('chart_div_puntos_ultimos'));
                    chart.draw(data, options);
                }
        </script>

        <script type="text/javascript">

            function createCompareLink() {
                var linkComparar = document.getElementById('id_link_comparar');

                var cantJugadores = <%=todosJugadores.size()%>;

                var link = "";

                for (i = 0; i <= cantJugadores; i++) {
                    var checkBoxId = 'id_checkbox_' + i;

                    var checkBox = document.getElementById(checkBoxId);

                    if (checkBox != null) {
                        if (checkBox.checked == true) {
                            if (link.length > 0) {
                                link = link + ",";
                            }

                            link = link + checkBox.value;
                        }
                    }
                }

                linkComparar.href = "?jugadores=" + link;
            }
        </script>
    </body>
</html>


